1. Field of the Invention
The present invention relates to the field of data delivery in a computer network system and, in particular, to methods and apparatus for providing compact and efficient representations of graphics information that will allow fewer bytes and faster transmission rate.
Portions of the disclosure of this patent document contain material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office file or records, but otherwise reserves all copyright rights whatsoever.
Sun, Sun Microsystems, the Sun logo, Sun Ray, Solaris and all Java-based trademarks and logos are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries. All SPARC trademarks are used under license and are trademarks of SPARC International, Inc. in the United States and other countries. All X trademarks are used under license and are trademarks of X Consortium in the United States and other countries. The UNIX trademark is used under license and is a trademark of American Telephone and Telegraphy Company in the United States and other countries. Products bearing SPARC trademarks are based upon an architecture developed by Sun Microsystems, Inc.
2. Description of Related Art
The multi-tier application architecture includes at least a server tier and a client tier. Referring now to FIG. 1, the client tier 1000 communicates requests to the server tier 1100 for data, software and services, for example, and the server tier 1100 responds to the requests. The server tier's response may entail communication with a database management system for the storage and retrieval of data. The server tier 1100 typically includes a database server system 1110, an application server system 1120, and application logic 1130 (i.e., software application programs, functions, etc.). The application server system 1120 responds to application requests received from the client tier 1000. The application server system 1120 may also forward data requests from the client tier 1000 to the database server system 1110.
The client tier 1000 typically consists of a computer system that provides a graphic user interface (GUI) generated by a client application, such as a browser or other user interface application. Conventional browsers include Internet Explorer and Netscape Navigator, among others. The client application generates a display from, for example, a specification of GUI elements (e.g., a file containing input, form, and text elements defined using the Hypertext Markup Language (HTML)) and/or from an applet (i.e., a program such as a program written using the Java™ programming language, or other platform-independent programming language, that runs when it is loaded by the browser).
Further application functionality is provided by application logic 1130 managed by application server system 1120 in server tier 1100. The apportionment of application functionality between client tier 1000 and server tier 1100 is dependent upon whether a “thin client” or “thick client” topology is desired. In a thin client topology, the client tier 1000 (i.e., the end user's computer appliance or unit) is used primarily to display output and obtain input, while the computing takes place in the server tier 1100. A thick client topology, on the other hand, uses a more conventional general purpose computer having processing, memory, and data storage capabilities.
In a typical system, especially one using a thin client topology, elements of the client tier 1000 and server tier 1100 execute within separate computers interconnected over a network 1200 such as an Ethernet network, a LAN (local area network) and/or a WAN (wide area network). Because commands (e.g., graphics commands) on how and what to display on the client tier 1000 are running on the server tier 1100 and away from the client tier 1000, the server tier 1100 needs to generate the graphics commands and put them into network data packets that are sent over the network 1200 to the client tier 1000 (e.g., to the thin client appliance currently displaying the user session). This represents an extra step in getting the information (e.g., the graphics information) to the user on the client tier 1000 because the server tier 1100 is not just generating commands for a local graphics card. Thus, efficiently solving the problems associated with getting the information (e.g., the graphics information) to the user over the network 1200 to the client tier 1000 is important in providing satisfactory performance from the user's point of view. For example, considerable amount of network bandwidth is required in transmitting graphics information on drawing/displaying lines, circles, etc. from the server tier 1100 to the client tier 1000. Many of these information are redundant and/or related.
Accordingly, it would be advantageous and desirable for a computer network system to provide compact and efficient representations of graphics commands on drawing/displaying lines, circles, etc. that will allow fewer bytes and faster transmission rate (e.g., more graphics primitives per second). Furthermore, to provide the more compact and efficient representations, it would be advantageous and desirable to exploit the redundancies and/or relations of the information in drawings/displaying lines, circles, etc.